<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0 auto;
        }

        .outer {
            height: 500px;
            width: 500px;
            background-color: aqua;
        }

        .inner {
            width: 300px;
            height: 300px;
            background-color: black;
        }

        .child {
            width: 100px;
            height: 100px;
            background-color: yellowgreen;
        }
    </style>
</head>

<body>
    <h3>事件流</h3>
    <p>事件流是事件在执行时的底层机制，主要体现在父子盒子之间事件的执行上。</p>
    <div class="outer">
        <div class="inner">
            <div class="child"></div>
        </div>
    </div>
    <script>
        // 获取嵌套的3个节点
        const outer = document.querySelector('.outer');
        const inner = document.querySelector('.inner');
        const child = document.querySelector('.child');

        // html 元素添加事件
        // document.documentElement.addEventListener('click', function () {
        //     console.log('html...')
        // })

        // body 元素添加事件
        // document.body.addEventListener('click', function () {
        //     console.log('body...')
        // })

        // 外层的盒子添加事件
        outer.addEventListener('click', function (ev) {
            console.log('outer...')
            ev.stopPropagation()
        })

        // 中间的盒子添加事件
        inner.addEventListener('click', function (ev) {
            console.log('inner...')
            ev.stopPropagation()
        })

        // 内层的盒子添加事件
        child.addEventListener('click', function (ev) {
            console.log('child...')
            ev.stopPropagation()
        })
    </script>
</body>

</html>